Skip to content

fix(registry): repair two critical Pkg-resolution breakers (repo URL; name/UUID) - #40

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/axiom-jl-registry-infra-kr7t4a
Jul 1, 2026
Merged

fix(registry): repair two critical Pkg-resolution breakers (repo URL; name/UUID)#40
hyperpolymath merged 1 commit into
mainfrom
claude/axiom-jl-registry-infra-kr7t4a

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Repairs the two critical breakers that stop this registry from resolving under Pkg. Part of the Axiom.jl flagship / registry-infrastructure hardening effort.

Changes

  • Registry.toml (G20): repo pointed at a stale HyperpolymathRegistry.git; set to the real remote https://github.com/hyperpolymath/julia-professional-registry.git. name = "JuliaProfessionalRegistry" is kept per owner decision — a registry's name and its repo slug are independent, so no GitHub rename is required.
  • H/Hyperpolymath/Deps.toml + Compat.toml (G21): the dependency with UUID c1c96f90-… was named JuliaKids, but Registry.toml binds that UUID to JuliaForChildren — the mismatch breaks Pkg.add Hyperpolymath. Renamed to JuliaForChildren.

RSR Quality Checklist

Required

  • No banned language patterns (TOML index edits only)
  • SPDX headers — no new/modified source files (three registry TOMLs; no licence/header changes)
  • No secrets, credentials, or .env files included
  • CI is green — pending (draft; will run governance/hypatia/codeql/scorecard/secret-scanner)

As Applicable — Registry Changes

  • Registry.toml index updated for a package/version — N/A (URL repair, no package added)
  • Per-package Package.toml/Versions.toml/Deps.toml/Compat.toml consistent — the JuliaKids↔JuliaForChildren inconsistency is fixed; an independent name↔UUID cross-check across 37 packages / 191 Deps entries now passes (this was the only mismatch)
  • Upstream package meets GOVERNANCE quality bar — N/A
  • Upstream tag matches registered version — N/A

As Applicable — Documentation / Infra Changes

  • STATE/ECOSYSTEM/META/TOPOLOGY/CHANGELOG/Wiki — not in this surgical fix; the broader stale-name sweep (~21 files still say HyperpolymathRegistry) and STATE reconciliation are tracked residuals, not addressed here.

Testing

  • julia -e 'using TOML; TOML.parsefile("Registry.toml")' and per-package TOMLs parse cleanly (37 packages).
  • Independent name↔UUID cross-check script over all 37 packages / 191 Deps / 176 Compat entries → PASS (JuliaKids mismatch gone; no others found).
  • Registry.toml["repo"] slug matches git remote get-url origin.
  • Pkg.Registry.add(url="file:///…") + Pkg.add round-trip: CI-only. It fails in this sandbox with libgit2 1.6.4 on the repo's GPG-signed commit history (GitError ENOTFOUND), while system git clone of the same repo succeeds and git fsck is clean — an environment limitation, not a repo defect. The intended real check is a https:// add in CI.

Residuals (tracked, not in this PR)

  • Broader HyperpolymathRegistry → canonical-name sweep across ~21 files (perfective).
  • J/JuliaForChildren/Package.toml repo still …/JuliaKids.jl.git (a repo slug, independent of the registry name — owner to decide whether to update prospectively).
  • RegistryCI/AutoMerge/TagBot wiring (G23) — separate PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1


Generated by Claude Code

… name/UUID)

- Registry.toml: `repo` pointed at a stale HyperpolymathRegistry.git; set it to
  the real remote https://github.com/hyperpolymath/julia-professional-registry.git.
  `name` stays "JuliaProfessionalRegistry" per owner decision -- a registry name
  and its repo slug are independent, so no GitHub rename is needed. (G20)
- H/Hyperpolymath/{Deps,Compat}.toml referenced UUID c1c96f90-... as "JuliaKids"
  while Registry.toml binds that UUID to "JuliaForChildren", which breaks
  `Pkg.add Hyperpolymath`. Renamed to JuliaForChildren to match. (G21)

Verified: Registry.toml + all 37 packages parse; an independent name<->UUID
cross-check across 37 packages / 191 Deps entries passes (this was the only
mismatch); the repo field matches the git remote slug.

Note: a local Pkg.Registry.add(file://...) round-trip fails under this sandbox's
bundled libgit2 1.6.4 on the repo's signed-commit history (system git clones it
fine; `git fsck` is clean) -- an environment limitation, not a repo defect.
Marked CI-only; a real https:// add in CI is the intended check.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1
@hyperpolymath
hyperpolymath marked this pull request as ready for review July 1, 2026 02:57
@hyperpolymath
hyperpolymath merged commit 750fb68 into main Jul 1, 2026
3 checks passed
@hyperpolymath
hyperpolymath deleted the claude/axiom-jl-registry-infra-kr7t4a branch July 1, 2026 02:57
hyperpolymath added a commit that referenced this pull request Jul 1, 2026
… gate + semver policy (#41)

<!-- SPDX-License-Identifier: CC-BY-SA-4.0 -->
## Summary

Makes the registry *professionally validated* — the two critical
breakers were fixed in #40; this adds the CI + policy so future
malformed changes are caught. Tier-2 of the flagship/registry hardening
effort (gaps G23, G25, G29).

## Changes

- **`ci/validate.jl`** — two-layer validator:
- *Layer 1:* the canonical **`RegistryCI.test`** (the checker
`JuliaRegistries/General` uses). It distinguishes the expected
non-General `registry_deps` gap (deps like HTTP/JSON3/Zygote registered
in General) from a real tooling/API error — the latter is **fatal**, so
a broken invocation can't silently pass.
- *Layer 2* (TOML-stdlib, independent): (a) every Deps.toml name↔UUID vs
`Registry.toml` across all 37 packages; (b)
`Registry.toml`/`Package.toml` repo slug + `git remote` consistency; (c)
warn-only Compat.toml upper-bound advisory.
- **`.github/workflows/registry-validate.yml`** — always-triggering CI
(no `on.*.paths`, per the estate required-check rule); the
General-`registry_deps` path is gated + `continue-on-error` (egress is
restricted in-sandbox, unrestricted in Actions).
- **`docs/REGISTRY-POLICY.adoc`** + **`docs/decisions/0001-…adoc`** —
semver bump rules, mandatory upper-bounded compat, name/UUID
immutability, and an auto-merge vs BDFL-review table; the first ADR
(GOVERNANCE referenced `docs/decisions/` which didn't exist — **closes
G29**). `GOVERNANCE.adoc` links the policy.
- **`tests/idris2/ValidateTest.idr`** — repaired 4 stale `README.adoc`
references to `README.md` (README was converted to Markdown in
`e0903a9`; this suite was never updated).

## RSR Quality Checklist

### Required
- [x] No banned language patterns (Julia validator + YAML + AsciiDoc)
- [x] SPDX headers on all new files (MPL-2.0 code / CC-BY-SA-4.0 docs) —
verified
- [x] No secrets, credentials, or `.env` files
- [ ] CI green — pending (draft; the new validator + existing gates will
run)

### As Applicable — Registry Changes
- [x] Per-package TOML consistency — now enforced in CI (name↔UUID +
repo slug across 37 packages)
- [ ] `Registry.toml` index updated for a package/version — N/A
(tooling/policy only)

### As Applicable — Documentation / Infra Changes
- [x] Policy doc + first ADR added; `GOVERNANCE.adoc` updated to link it

## Testing

Independently re-run (not self-graded by the worker):
```
julia ci/validate.jl  →  VALIDATION PASSED (exit 0)
  RegistryCI layer status: expected_general_gap   (ran; 23 "failures" are all General-registry dep UUIDs, expected)
  Layer 2a: 191 name↔UUID pairs across 37 packages — 0 mismatches
  Layer 2b: Registry.toml slug "hyperpolymath/julia-professional-registry" == git remote — 0 owner mismatches
  Layer 2c: 0 unbounded Compat.toml entries
```
The worker also adversarially corrupted scratch copies to confirm each
Layer-2 check fails (exit 1) as designed.

## Residuals (tracked)
- **RegistryCI.AutoMerge** bot-driven PR automation (needs a GitHub
token + a scope decision on bot- vs human-executed policy rows) — noted
in the ADR/policy as a follow-up.
- The Idris2 suite content bug is fixed but the suite still isn't
invoked by any workflow (no `idris2` bootstrap here) — flagged honestly,
not faked.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1

---
_Generated by [Claude
Code](https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1)_

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants